/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Studio7i;

import java.util.*;
import org.junit.Test;
import static org.junit.Assert.*;

/**
 *
 * @author Grupo 5
 */
public class ReservaSalaTest {

    AdmSalas admSalas = new AdmSalas();
    AdmReserva admReserva = new AdmReserva();
    String resultado = "";

    
    public void DebeRegistrarReserva() {

        // Preparar los datos de prueba

        String nombre = "sala 1";
        Local local = new Local("lm001", "Local 1", "algun lugar");
        int capacidadSala = 10;
        double costo = 120.00;
        // generar la lista de instrumentos
        List<Instrumento> instrumentos = new ArrayList<Instrumento>();
        AdmInstrumentos admInstrumentos = new AdmInstrumentos();
        admInstrumentos.registrarInstrumento("guitarra", "Yamaha", "Squier", "2009", "Para zurdo", 25.00);
        admInstrumentos.registrarInstrumento("guitarra", "Falcon", "Basic", "1989", "Criolla", 5.00);
        admInstrumentos.registrarInstrumento("bateria", "Tamborin", "SD23", "2010", "con platillos nuevos", 32.00);

        instrumentos = admInstrumentos.obtenerListaInstrumentos();
        // Generar la Lista de Servicios
        List<Servicio> servicios = new ArrayList<Servicio>();
        AdmServicios admServicios = new AdmServicios();
        admServicios.registrarServicio("Grabacion", 120.00);
        admServicios.registrarServicio("Partituras", 10.00);
        admServicios.registrarServicio("Musico", 70.00);
        servicios = admServicios.obtenerListaServicios();

        Sala sala = new Sala(nombre, local, instrumentos, servicios, capacidadSala, costo);
        admSalas.registrarSalaObjeto(sala);

        String nombre2 = "sala 2";
        Local local2 = new Local("lm002", "Local 2", "un lugar");
        int capacidadSala2 = 12;
        double costo2 = 120.00;

        // generar la lista de instrumentos
        List<Instrumento> instrumentos2 = new ArrayList<Instrumento>();
        AdmInstrumentos admInstrumentos2 = new AdmInstrumentos();

        admInstrumentos2.registrarInstrumento("microfono", "Yamaha", "Sq32", "2003", "Cableado", 19.00);
        admInstrumentos2.registrarInstrumento("microfono", "Yamaha", "Sq39", "2005", "inalambrico", 25.00);
        admInstrumentos2.registrarInstrumento("microfono", "Yamaha", "Sq34", "2004", "inalambrico", 25.00);
        instrumentos2 = admInstrumentos2.obtenerListaInstrumentos();

        // Generar la Lista de Servicios
        List<Servicio> servicios2 = new ArrayList<Servicio>();
        AdmServicios admServicios2 = new AdmServicios();
        admServicios2.registrarServicio("Grabacion", 120.00);
        admServicios2.registrarServicio("Partituras", 10.00);
        admServicios2.registrarServicio("Musico", 70.00);
        servicios = admServicios2.obtenerListaServicios();

        Sala sala2 = new Sala(nombre2, local2, instrumentos2, servicios2, capacidadSala2, costo2);
        admSalas.registrarSalaObjeto(sala2);

        assertEquals(2, admSalas.getSala().size());

        //Hacer la busqueda de la Sala
        String nLocal = "Local 1";
        String nSala = "sala 1";
        String dLocal = "un lugar";
        int cap = 10;

        Sala escogida = admSalas.buscarSala(admSalas, nSala, nLocal, dLocal, cap);

        //Introducir informacion de la reserva
        String dia = "12/10/11";
        double horaInicial = 10.00;
        double horaFinal = 12.00;

        // Generar la Lista de Instrumentos Adicionales
        List<Instrumento> instrumentosAd = new ArrayList<Instrumento>();
        AdmInstrumentos admInstrumentosAd = new AdmInstrumentos();
        admInstrumentosAd.registrarInstrumento("Bajo", "Yamaha", "Squier", "2009", "Para zurdo", 25.00);
        instrumentosAd = admInstrumentosAd.obtenerListaInstrumentos();
        // Generar la Lista de Servicios Adicionales
        List<Servicio> serviciosAd = new ArrayList<Servicio>();
        AdmServicios admServiciosAd = new AdmServicios();
        admServiciosAd.registrarServicio("Parlantes", 12.00);
        serviciosAd = admServiciosAd.obtenerListaServicios();

        // Ejecucion de la prueba

        resultado = admReserva.registrarReserva(escogida, dia, horaInicial, horaFinal, instrumentosAd, serviciosAd);

        // Comprobar los resultados
        assertTrue(resultado.equals("Reserva completada con exito"));

        System.out.println("Reserva completada con exito");

    }

    @Test
    public void DebeMostrarErrorSiSalaEstaOcupada() {

        // Preparar los datos de prueba

        //Intruoducir informacion de Sala
        String nombre = "sala 1";
        Local local = new Local("lm001", "Local 1", "algun lugar");
        int capacidadSala = 10;
        double costo = 120;
        // generar la lista de instrumentos
        List<Instrumento> instrumentos = new ArrayList<Instrumento>();
        AdmInstrumentos admInstrumentos = new AdmInstrumentos();
        admInstrumentos.registrarInstrumento("guitarra", "Yamaha", "Squier", "2009", "Para zurdo", 25.00);
        admInstrumentos.registrarInstrumento("guitarra", "Falcon", "Basic", "1989", "Criolla", 5.00);
        admInstrumentos.registrarInstrumento("bateria", "Tamborin", "SD23", "2010", "con platillos nuevos", 32.00);

        instrumentos = admInstrumentos.obtenerListaInstrumentos();
        // Generar la Lista de Servicios
        List<Servicio> servicios = new ArrayList<Servicio>();
        AdmServicios admServicios = new AdmServicios();
        admServicios.registrarServicio("Grabacion", 120.00);
        admServicios.registrarServicio("Partituras", 10.00);
        admServicios.registrarServicio("Musico", 70.00);
        servicios = admServicios.obtenerListaServicios();

        Sala sala = new Sala(nombre, local, instrumentos, servicios, capacidadSala, costo);
        admSalas.registrarSalaObjeto(sala);
        assertEquals(1, admSalas.getSala().size());

        //Introducir informacion de la reserva 1
        String dia = "12/10/11";
        double horaInicial = 10.00;
        double horaFinal = 12.00;

        // Generar la Lista de Instrumentos Adicionales
        List<Instrumento> instrumentosAd = new ArrayList<Instrumento>();
        AdmInstrumentos admInstrumentosAd = new AdmInstrumentos();
        admInstrumentosAd.registrarInstrumento("Bajo", "Yamaha", "Squier", "2009", "Para zurdo", 25.00);
        instrumentosAd = admInstrumentosAd.obtenerListaInstrumentos();

        // Generar la Lista de Servicios Adicionales
        List<Servicio> serviciosAd = new ArrayList<Servicio>();
        AdmServicios admServiciosAd = new AdmServicios();
        admServiciosAd.registrarServicio("Parlantes", 12.00);
        serviciosAd = admServiciosAd.obtenerListaServicios();

        //Introducir informacion de la reserva 2
        String dia2 = "12/10/11";
        double horaInicial2 = 10.00;
        double horaFinal2 = 11.00;

        // Generar la Lista de Instrumentos Adicionales
        List<Instrumento> instrumentosAd2 = new ArrayList<Instrumento>();
        AdmInstrumentos admInstrumentosAd2 = new AdmInstrumentos();
        admInstrumentosAd2.registrarInstrumento("Organo", "Yamaha", "Squier", "2009", "Para zurdo", 25.00);
        instrumentosAd2 = admInstrumentosAd2.obtenerListaInstrumentos();
        // Generar la Lista de Servicios Adicionales
        List<Servicio> serviciosAd2 = new ArrayList<Servicio>();
        AdmServicios admServiciosAd2 = new AdmServicios();
        admServiciosAd2.registrarServicio("Pistas", 6.00);
        serviciosAd2 = admServiciosAd2.obtenerListaServicios();
        
        
        // Ejecucion de la prueba
        admReserva.registrarReserva(sala, dia, horaInicial, horaFinal, instrumentosAd, serviciosAd);
        resultado = admReserva.registrarReserva(sala, dia2, horaInicial2, horaFinal2, instrumentosAd2, serviciosAd2);

        // Comprobar los resultados

        assertEquals(resultado, "Ocupada");
    }
}
